package cn.demoncat.util.sec;

import org.apache.commons.codec.binary.Base64;

import cn.demoncat.util.lang.StringUtil;

/**
 * Base64 编码和解码
 *
 * @author 延晓磊
 *
 * @since 2016年8月11日
 */
public class Base64Util {

	/**
	 * 编码
	 * 
	 * @param data	源数据
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2016年8月11日
	 */
	public static String encode(byte[] data) {
		return Base64.encodeBase64String(data);
	}

	/**
	 * 编码
	 * 
	 * @param data	源数据
	 * @return
	 * 
	 * @author 延晓磊
	*
	* @since 2016年8月11日
	 */
	public static String encodeStr(String data) {
		return encode(StringUtil.getBytes(data));
	}

	/**
	 * 编码为URL安全的字符串
	 * 
	 * @param data	源数据
	 * @return
	 * 
	 * @author 延晓磊
	*
	* @since 2016年8月11日
	 */
	public static String encodeUrl(byte[] data) {
		return Base64.encodeBase64URLSafeString(data);
	}

	/**
	 * 编码为URL安全的字符串
	 * 
	 * @param data	源数据
	 * @return
	 * 
	 * @author 延晓磊
	*
	* @since 2016年8月11日
	 */
	public static String encodeUrlStr(String data) {
		return encodeUrl(StringUtil.getBytes(data));
	}

	/**
	 * 解码
	 * 
	 * @param text	编码数据
	 * @return
	 * 
	 * @author 延晓磊
	*
	* @since 2016年8月11日
	 */
	public static byte[] decode(String text) {
		return Base64.decodeBase64(text);
	}

	/**
	 * 解码
	 * 
	 * @param text	编码数据
	 * @return
	 * 
	 * @author 延晓磊
	*
	* @since 2016年8月11日
	 */
	public static String decodeStr(String text) {
		return StringUtil.getStr(decode(text));
	}
}
